//package com.wenhuitec.android.tang.util;
//
//import android.annotation.SuppressLint;
//
//import com.wenhuitec.android.tang.entity.Order;
//import com.wenhuitec.android.tang.entity.OrderItem;
//
//import java.math.BigDecimal;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.List;
//
//public class UsbPrintClient(private val usbPrinter:UsbPrinter,
//                            private val usbPrintData:UsbPrintData, private val printNumber:Int=1) {
//
//    @SuppressLint("SimpleDateFormat")
//    private SimpleDateFormat sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
//    private int number = 1;
//    private Order order;
//
//    private static int NAME_WIDTH_58 = 10;
//    private static int NUMBER_WIDTH_58 = 7;
//    private static int PRICE_WIDTH_58 = 7;
//    private static int SALE_PRICE_WIDTH_58 = 8;
//    // 80mm
//    private static int NAME_WIDTH_80 = 20;
//    private static int NUMBER_WIDTH_80 = 9;
//    private static int PRICE_WIDTH_80 = 9;
//    private static int SALE_PRICE_WIDTH_80 = 10;
//
//    fun usbToPrint() {
//        thread {
//            // 设置加粗
//            usbPrinter.bold(true)
//            // 文字大小
//            usbPrinter.setTextSize(3)
//            // 设置文字居中
//            usbPrinter.setAlign(1)
//            // 打印文字并换行
//            usbPrinter.printTextNewLine("结账单")
//            // 换2行
//            usbPrinter.printLine(2)
//            // 取消加粗
//            usbPrinter.bold(false)
//            usbPrinter.setTextSize(0)
//            // 虚线
//            printDashed(usbPrinter)
//            // 设置文字居左对齐
//            usbPrinter.setAlign(0)
//            val orderNo = order.orderNo
//            usbPrinter.printTextNewLine("流水号:" + orderNo.substring(orderNo.length - 5))
//            usbPrinter.printTextNewLine("单号:$orderNo")
//            usbPrinter.printTextNewLine("结账时间:" + sdf.format(Date(order.orderConsumePO.createDate)))
//            printDashed(usbPrinter)
//            usbPrinter.bold(true)
//            // 表头
//            printOrderItemTitle(usbPrinter)
//            usbPrinter.bold(false)
//            printDashed(usbPrinter)
//            // 商品
//            val orderItemList = order.orderConsumePO.items
//            val size = orderItemList.size
//            for (pos in orderItemList.indices) {
//                printOrderItem(usbPrinter, orderItemList[pos], pos, size, UsbPrintData.WIDTH_80 == usbPrintData.printType)
//            }
//            // 整单备注
//            if (order.orderConsumePO.remarks != null && "" != order.orderConsumePO.remarks) {
//                printDashed(usbPrinter)
//                usbPrinter.printTextNewLine("备注:" + order.orderConsumePO.remarks)
//            }
//            printDashed(usbPrinter)
//            // 设置文字居右对齐
//            usbPrinter.setAlign(2)
//            usbPrinter.printTextNewLine("订单金额:" + changeF2Y(order.orderConsumePO.totalAmount) + "元")
//            // 优惠金额
//            if (order.orderConsumePO.discountAmount != 0L) {
//                usbPrinter.printTextNewLine("优惠金额:" + changeF2Y(order.orderConsumePO.discountAmount) + "元")
//            }
//            // 支付金额
//            usbPrinter.printTextNewLine("支付金额:" + changeF2Y(order.orderConsumePO.totalAmount - order.orderConsumePO.discountAmount) + "元")
//            printDashed(usbPrinter)
//            // 收银员
//            usbPrinter.setAlign(0)
//            usbPrinter.printTextNewLine("收银员:" + order.orderConsumePO.waiterName)
//            // 打印时间
//            usbPrinter.printTextNewLine("打印时间:" + sdf.format(Date()))
//            usbPrinter.printLine(6)
//            // 切纸
//            usbPrinter.cutPager()
//            if (number != printNumber) {
//                number += 1
//                usbToPrint()
//            }
//        }
//
//    }
//
//    /**
//     * 打印分割线
//     */
//    private void printDashed(UsbPrinter usbPrinter) {
//        if (UsbPrintData.WIDTH_80 == usbPrintData.printType) {
//            usbPrinter.printTextNewLine("------------------------------------------------")
//        } else {
//            usbPrinter.printTextNewLine("-------------------------------")
//        }
//    }
//
//    /**
//     * 打印表头
//     */
//    private fun printOrderItemTitle(UsbPrinter usbPrinter) {
//        if (UsbPrintData.WIDTH_80 == usbPrintData.printType) { // 80mm
//            usbPrinter.printTextNewLine("商品" + getSpace(16) // 20
//                    + getSpace(5) // 5
//                    + "数量" // 4
//                    + getSpace(5) // 5
//                    + "单价" // 4
//                    + getSpace(6) + "小计")
//        } else {
//            // 58mm
//            usbPrinter.printTextNewLine("商品" + getSpace(6) // 10
//                    + getSpace(3) // 3
//                    + "数量" // 4
//                    + getSpace(3) // 3
//                    + "单价" // 4
//                    + getSpace(4) + "小计") // 8
//        }
//    }
//
//    /**
//     * 打印具体的商品信息
//     */
//    private void printOrderItem(UsbPrinter usbPrinter, OrderItem orderItem, int position, int size, boolean type) {
//
//        int nameWidthTotal = type ? NAME_WIDTH_80 : NAME_WIDTH_58;
//
//        int numberWidthTotal = type ? NAME_WIDTH_80 : NAME_WIDTH_58;
//        int priceWidthTotal = type ? NAME_WIDTH_80 : NAME_WIDTH_58;
//        int salePriceWidthTotal = type ? NAME_WIDTH_80 : NAME_WIDTH_58;
//        // 名称
//        String productName = orderItem.getSkuSpec() == null ? orderItem.getSkuName() : orderItem.getSkuName() + "(" + orderItem.getSkuSpec() + ");"
//        List<String> nameStrLines = new ArrayList<>();
//        char[] productNameChars = productName.toCharArray();
//        // 遍历字符
//        for (c in productNameChars) {
//            // 当前字符
//            val str = c.toString()
//            // 当前字符的宽度
//            val strWidth = usbPrinter.getStringWidth(c.toString())
//            // 如果行数据是空的，直接加
//            if (nameStrLines.isEmpty()) {
//                nameStrLines.add(str)
//            } else {
//                // 获取最后一行字符串
//                var lastLineStr = nameStrLines[nameStrLines.size - 1]
//                // 最后一场字符串宽度
//                val lastLineStrWidth = usbPrinter.getStringWidth(lastLineStr)
//                // 宽度小于等于10，直接加入该行
//                if (lastLineStrWidth + strWidth <= nameWidthTotal) {
//                    lastLineStr += str
//                    nameStrLines.removeAt(nameStrLines.size - 1)
//                    nameStrLines.add(lastLineStr)
//                } else {
//                    nameStrLines.add(str)
//                }
//            }
//        }
//        // 打印名称第一行
//        val nameFirstLine = nameStrLines[0]
//        val nameFirstLineWidth = usbPrinter.getStringWidth(nameFirstLine + "")
//        val nameFirstLineSpaceWidth =
//        if (nameFirstLineWidth < nameWidthTotal) nameWidthTotal - nameFirstLineWidth
//        else 0
//        val nameFirstLineSpace = getSpace(nameFirstLineSpaceWidth)
//        usbPrinter.printText(nameFirstLine)
//        usbPrinter.printText(nameFirstLineSpace)
//        // 数量
//        val number = orderItem.totalCount
//        val numberWidth = usbPrinter.getStringWidth(number.toString() + "")
//        val numberSpaceWidth = if (numberWidth < numberWidthTotal) numberWidthTotal - numberWidth
//        else 0
//        val numberSpace = getSpace(numberSpaceWidth)
//        usbPrinter.printText(numberSpace)
//        usbPrinter.printText(number.toString() + "")
//        // 单价
//        val originalPrice = changeF2Y(orderItem.price)
//        val originalPriceWidth = usbPrinter.getStringWidth(originalPrice + "")
//        val originalPriceSpaceWidth =
//        if (originalPriceWidth < priceWidthTotal) priceWidthTotal - originalPriceWidth
//        else 0
//        val originalPriceSpace = getSpace(originalPriceSpaceWidth)
//        usbPrinter.printText(originalPriceSpace)
//        usbPrinter.printText(originalPrice + "")
//        // 小计
//        val salePrice = changeF2Y(java.lang.Double.valueOf(orderItem.price * orderItem.totalCount).toLong())
//        val salePriceWidth = usbPrinter.getStringWidth(salePrice + "")
//        val salePriceSpaceWidth =
//        if (salePriceWidth < salePriceWidthTotal) salePriceWidthTotal - salePriceWidth
//        else 0
//        val salePriceSpace = getSpace(salePriceSpaceWidth)
//        usbPrinter.printText(salePriceSpace)
//        usbPrinter.printText(salePrice + "")
//        if (position != size - 1) {
//            usbPrinter.printTextNewLine("")
//        }
////        usbPrinter.printLine();
//        // 名称剩余行
//        if (nameStrLines.size > 1) {
//            for (i in 1 until nameStrLines.size){
//                val nameLine = nameStrLines[i]
//                usbPrinter.printText(nameLine)
//                if (position != size - 1) {
//                    usbPrinter.printTextNewLine("")
//                }
////                usbPrinter.printLine();
//            }
//        }
//    }
//
//    /**
//     * 获取指定数量的空字符串
//     */
//    private String getSpace(int num) {
//        if (num == 0) {
//            return "";
//        }
//        StringBuilder sb = new StringBuilder();
//        for (int i = 0; i < num; i++) {
//            sb.append(" ");
//        }
//        return sb.toString();
//    }
//
//    /**
//     * 分转元
//     */
//    private String changeF2Y(Long price) {
////        return BigDecimal.valueOf(java.lang.Long.valueOf(price !!)).
////        divide(BigDecimal(100)).toString()
//        return new BigDecimal(price).divide(new BigDecimal(100)).toPlainString();
//    }
//
//}
